package com.kmxd.ams.client.logs.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 系统操作日志
 *
 * @author ZuoLG
 * @since 2022-09-06
 */
@Schema(description = "系统操作日志对象")
@Data
public class LogSystemAddDTO implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键ID */
  @Schema(description = "主键ID")
  private Long id;

  /** 公司ID */
  @Schema(description = "公司ID")
  @NotNull(message = "公司ID不能为空")
  private Long comId;

  /** 全宗ID */
  @Schema(description = "全宗ID")
  @NotNull(message = "全宗ID不能为空")
  private Long fondsId;

  /** 部门ID */
  @Schema(description = "部门ID")
  @NotBlank(message = "部门ID不能为空")
  @Size(max = 100, message = "部门ID长度不能超过100个字符")
  private Long deptId;

  /** 部门名称 */
  @Schema(description = "部门名称")
  @NotBlank(message = "部门名称不能为空")
  @Size(max = 100, message = "部门名称长度不能超过100个字符")
  private String deptName;

  /** 操作模块 */
  @Schema(description = "操作模块")
  @NotBlank(message = "操作模块不能为空")
  @Size(max = 100, message = "操作模块长度不能超过100个字符")
  private String logModule;

  /** 操作内容 */
  @Schema(description = "操作内容")
  @NotBlank(message = "操作内容不能为空")
  @Size(max = 100, message = "操作内容长度不能超过100个字符")
  private String logTitle;

  /** 日志状态 0成功；1失败 */
  @Schema(description = "日志状态 0成功；1失败")
  @NotBlank(message = "日志状态 0成功；1失败不能为空")
  @Size(max = 100, message = "日志状态 0成功；1失败长度不能超过100个字符")
  private String logStatus;

  /** 用户平台 WEB：WEB管理后台；APP：前端用户平台 */
  @Schema(description = "用户平台 WEB：WEB管理后台；APP：前端用户平台")
  @NotBlank(message = "用户平台 WEB：WEB管理后台；APP：前端用户平台不能为空")
  @Size(max = 100, message = "用户平台 WEB：WEB管理后台；APP：前端用户平台长度不能超过100个字符")
  private String userPlatform;

  /** 请求地址 */
  @Schema(description = "请求地址")
  @NotBlank(message = "请求地址不能为空")
  @Size(max = 100, message = "请求地址长度不能超过100个字符")
  private String requsetUri;

  /** 请求方式 */
  @Schema(description = "请求方式")
  @NotBlank(message = "请求方式不能为空")
  @Size(max = 100, message = "请求方式长度不能超过100个字符")
  private String requsetType;

  /** 请求方法 */
  @Schema(description = "请求方法")
  @NotBlank(message = "请求方法不能为空")
  @Size(max = 100, message = "请求方法长度不能超过100个字符")
  private String requsetMethod;

  /** 请求参数 */
  @Schema(description = "请求参数")
  @NotBlank(message = "请求参数不能为空")
  @Size(max = 100, message = "请求参数长度不能超过100个字符")
  private String requsetParams;

  /** 返回参数 */
  @Schema(description = "返回参数")
  @NotBlank(message = "返回参数不能为空")
  @Size(max = 100, message = "返回参数长度不能超过100个字符")
  private String responseResult;

  /** 请求耗时 */
  @Schema(description = "请求耗时")
  @NotBlank(message = "请求耗时不能为空")
  @Size(max = 100, message = "请求耗时长度不能超过100个字符")
  private String requsetTime;

  /** 异常信息 */
  @Schema(description = "异常信息")
  @NotBlank(message = "异常信息不能为空")
  @Size(max = 100, message = "异常信息长度不能超过100个字符")
  private String exception;

  /** 操作人员 */
  @Schema(description = "操作人员")
  @NotBlank(message = "操作人员不能为空")
  @Size(max = 100, message = "操作人员长度不能超过100个字符")
  private String operName;

  /** IP地址 */
  @Schema(description = "IP地址")
  @NotBlank(message = "IP地址不能为空")
  @Size(max = 100, message = "IP地址长度不能超过100个字符")
  private String ipAddress;

  /** 操作地点 */
  @Schema(description = "操作地点")
  @NotBlank(message = "操作地点不能为空")
  @Size(max = 100, message = "操作地点长度不能超过100个字符")
  private String operLocation;

  /** 浏览器类型 */
  @Schema(description = "浏览器类型")
  @NotBlank(message = "浏览器类型不能为空")
  @Size(max = 100, message = "浏览器类型长度不能超过100个字符")
  private String browser;

  /** 操作系统 */
  @Schema(description = "操作系统")
  @NotBlank(message = "操作系统不能为空")
  @Size(max = 100, message = "操作系统长度不能超过100个字符")
  private String os;

  /** 日志安全等级：0低，1中，2高，3高危 */
  @Schema(description = "日志安全等级：0低，1中，2高，3高危")
  @NotNull(message = "日志安全等级：0低，1中，2高，3高危不能为空")
  private Integer level;

  /** 备注 */
  @Schema(description = "备注")
  @NotBlank(message = "备注不能为空")
  @Size(max = 100, message = "备注长度不能超过100个字符")
  private String remarks;
}
